package com.hotel.common.enums;

/**
 * 业务处理结果码
 */
public enum BaseResultCodeEnum {
	/**操作成功**/
	ERR_CODE_200("200", "操作成功"),

    //00开头，表示系统级错误
    /**系统异常**/
    ERR_CODE_00000("00000", "系统异常"),
    /**系统执行异常**/
    ERR_CODE_00001("00001", "系统执行异常"),
    /**调用后台服务异常**/
    ERR_CODE_00002("00002", "调用后台服务异常"),
    /**登陆验证**/
    ERR_CODE_00003("00003", "您尚未登录，请登录"),
    /**登陆验证**/
    ERR_CODE_00004("00004", "您已登录，无需重复操作"),
    /**无权访问**/
    ERR_CODE_00005("00005", "您无权访问"),
    /**权限认证通过**/
    ERR_CODE_00006("00006", "权限认证通过"),
    /**密码多次输入错误**/
    ERR_CODE_00007("00007", "密码多次错误，账号被暂时锁定，请在10分钟后再尝试登陆"),
    /**文件服务器配置方案出错**/
    ERR_CODE_00008("00008","文件服务器配置方案出错"),
    
    
    //10开头，表示数据库错误
    /**数据库插入异常**/
    ERR_CODE_10000("10000", "数据库插入异常"),
    /**数据库更新异常**/
    ERR_CODE_10001("10001", "数据库更新异常"),
    /**数据库删除异常**/
    ERR_CODE_10002("10002", "数据库删除异常"),
    /**数据库查询异常**/
    ERR_CODE_10003("10003", "数据库查询异常"),
    
    //20开头，表示入参错误
    /**ID参数不合法**/
    ERR_CODE_20000("20000","ID参数不合法"),
    /**文件类型不合法**/
    ERR_CODE_20029("20029","文件类型不合法"),
    /**文件大小不合法**/
    ERR_CODE_20030("20030","文件大小不合法"),
    
    //30开头，表示业务错误
    /**密码错误**/
    ERR_CODE_30000("30000", "密码错误"),
    /**此号码已被人注册**/
    ERR_CODE_30001("30001","此号码已被人注册"),
    /**没有这个用户**/
    ERR_CODE_30002("30002","此用户不存在"),
    /**此账号已被人注册**/
    ERR_CODE_30003("30003","此账号已被人注册"),
    /**此账号已被人锁定**/
    ERR_CODE_30004("30004","此账号已被人锁定"),
    /**角色ID参数有误**/
    ERR_CODE_30005("30005","角色ID参数有误"),
    /**文件上传失败**/
    ERR_CODE_30006("30006","文件上传失败"),
    /**文件上传次数超出限制**/
    ERR_CODE_30007("30007","文件上传次数超出限制"),
    
    //40开头，表示返回结果错误
    /**数据不存在**/
    ERR_CODE_40000("40000", "数据不存在"),
    /**返回结果为空**/
    ERR_CODE_40001("40001", "返回结果为空"),

    //50表示逻辑处理错误
    /**数据转换异常**/
    ERR_CODE_50000("50000", "数据转换异常"),
    
    //90开头，表示其他错误**/
    /**其他错误**/
    ERR_CODE_90000("90000", "其他未知错误"),;
    
    /** 错误码 */
    private String code;

    /** 错误信息 */
    private String msg;

    BaseResultCodeEnum(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 根据code获取对应的枚举。
     *
     * @param code 枚举值
     * @return code值对应的枚举
     */
    public static BaseResultCodeEnum getEnumByCode(String code) {

        //value为空，返回null
        if (code == null || code == "") {
            return BaseResultCodeEnum.ERR_CODE_40001;
        }

        //遍历
        for (BaseResultCodeEnum errEnum : values()) {
            if (code.equals(errEnum.getCode())) {
                return errEnum;
            }
        }
        //找不到匹配的，返回null
        return BaseResultCodeEnum.ERR_CODE_90000;
    }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

}
